#pragma once
#include "arrow/arrow.h"
#include "state_machin_define.h"
#include "state_check_password.h"
#include "state_recv_path.h"
#include "state_send_file_data.h"
#include "state_send_path_list.h"
#include <string>

namespace ArrowWebCodeView
{
namespace SessionMachine
{
using Factory = Arrow::Pattern::StaticFactory<
    StateEnum,
    StateBase,
    Arrow::Pattern::StaticFactoryAssist<StateEnum, StateEnum::CheckPassword, StateCheckPassword>,
    Arrow::Pattern::StaticFactoryAssist<StateEnum, StateEnum::RecvPath, StateRecvPath>,
    Arrow::Pattern::StaticFactoryAssist<StateEnum, StateEnum::SendPathList, StateSendPathList>,
    Arrow::Pattern::StaticFactoryAssist<StateEnum, StateEnum::SendFileData, StateSendFileData>>;

using Context = Arrow::Pattern::StateContext2<Data, StateEnum, MsgEnum, Factory, 0, const std::string&, std::string&>;
}
}